package com.iaz.tech.tools.common.utils;

public interface IChainNodeAble<T> {
	 /**
     * 返回链表成员
     * @return
     */
    T toData();
    /**
     * 填充数据
     * @param data
     */
    void pushData(T data);
    
    /**
     * 复原
     * @return
     */
	IChainNodeAble<T> reset();
    
    /**
     * 出示链表的唯一ID
     * @return
     */
    long chainIdentifyNo();
    /**
     * 获得下一步执行的计划，如果没有下一步骤，则返回NULL
     * @return
     */
    IChainNodeAble<T> nextChain();
    
    void putNext(IChainNodeAble<T> _chainNode);
    
    /**
     * 前一个
     * @return
     */
    IChainNodeAble<T> prevChain();
    void putPrev(IChainNodeAble<T> _chainNode);
    /**
     * 向下，进入子链表
     * @return
     */
    IChainNodeAble<T> downChain();
    void putDown(IChainNodeAble<T> _chainNode);
    /**
     * 向上，进入父链表
     * @return
     */
    IChainNodeAble<T> upperChain();
    void putUpper(IChainNodeAble<T> _chainNode);
    
    /**
     * 判断当前链表节点是头
     * @return
     */
    boolean isHeader();
    /**
     * 判断当前链表节点是否尾部
     * @return
     */
    boolean isTail();
    /**
     * 是否有子链表
     * @return
     */
    boolean hasChildren();
    /**
     * 是否有上级链表节点
     * @return
     */
    boolean hasUpper();
    /**
     * 具备子类
     * @return
     */
    boolean containerChildren();
    /**
     * 清除
     */
    void clear();
     
}
